home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2010 April
/
PCWorld0410.iso
/
pluginy Firefox
/
2207
/
2207.xpi
/
chrome
/
cooliris.jar
/
content
/
cooliris
/
js
/
cpvw_pageProperties.js
Wrap
Text File
|
2009-12-22
|
14KB
|
444 lines
var cpvw_view = {
position : {
x : -1,
y : -1,
width : -1,
height : -1
},
openDelayTime : cpvw_Delays.OPEN_DELAY_TIME,
prefetchDelay : cpvw_Delays.PREFETCH_DELAY_TIME,
dispDelayTime : cpvw_Delays.DISPLAY_DELAY_TIME,
showPreview : function(noAnim, hiddenOverride)
{
},
hidePreview : function()
{
}
}
var cpvw_controller = {
}
var cpvw_frameHandler = {
// called on main window load, i.e. once for window load
setup : function()
{
var frmPreview = cpvw_controller.getPreviewFrame();
frmPreview.addEventListener("DOMContentLoaded", cpvw_frameHandler, false);
frmPreview.addEventListener("CoolPreviewsCoolirisDontShow", cpvw_frameHandler, false, true);
frmPreview.addEventListener("CoolPreviewsCoolirisContinue", cpvw_frameHandler, false, true);
for (var i = 0; i < navigator.mimeTypes.length; i++)
{
if (navigator.mimeTypes[i].type.toLowerCase() == "application/pdf")
this.hasAcrobat = true;
}
},
handleEvent : function(evt)
{
if (evt.type == "DOMContentLoaded")
{
var frmPreview = this.getPreviewFrame();
if (frmPreview.contentDocument.URL == "chrome://cooliris/content/coolirisBlank.htm")
return;
var pref = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
var currentPref = pref.getIntPref("permissions.default.image");
if (currentPref != cpvw_previewHandler.beforePref)
{
pref.setIntPref("permissions.default.image", cpvw_previewHandler.beforePref);
this.showImages();
}
cpvw_previewHandler.pageLoad(evt);
if (cpvw_previewHandler.customSite == "youtube_video")
{
if (frmPreview.contentDocument && frmPreview.contentDocument.getElementById("watch-this-vid"))
{
frmPreview.contentDocument.getElementById("watch-this-vid").scrollIntoView(true);
frmPreview.contentWindow.scrollBy(5, 0);
}
}
if (!cpvw_jsUtils.isFF2())
{
frmPreview.contentDocument.addEventListener("mouseup", cpvw_subSearchBar, false);
}
}
else if (evt.type == "CoolPreviewsCoolirisDontShow")
{
var obj = cpvw_jsUtils.decodeJson(cpvw_prefHandler.getPref(cpvw_Prefs.jsonPrefCooliris));
obj.showCoolirisPage = false;
cpvw_prefHandler.setPrefJson(cpvw_Prefs.jsonPrefCooliris, obj);
if (cpvw_previewHandler.customSite == "google_images" || cpvw_previewHandler.customSite == "yahoo_images")
{
cpvw_imageDocHandler.startPiclensLite();
cpvw_previewHandler.hidePreview(true, "CoolirisLite");
}
}
else if (evt.type == "CoolPreviewsCoolirisContinue")
{
if (cpvw_previewHandler.customSite == "google_images" || cpvw_previewHandler.customSite == "yahoo_images")
{
cpvw_imageDocHandler.startPiclensLite();
cpvw_previewHandler.hidePreview(true, "CoolirisLite");
}
}
},
showImages : function()
{
var frmPreview = cpvw_previewHandler.getPreviewFrame();
var arrDocs = [];
arrDocs.push(frmPreview.contentDocument);
arrDocs.concat(cpvw_getDocuments(frmPreview.contentWindow));
setTimeout(function()
{
for (var k = 0; k < arrDocs.length; k++)
{
var ilist = arrDocs[k].images;
for (var i = 0; i < ilist.length; i++)
{
ilist[i].setAttribute("src", ilist[i].src);
}
var bodyNodes = arrDocs[k].getElementsByTagName("body");
if (bodyNodes.length == 0)
return;
var treeWalker = bodyNodes[0].ownerDocument.createTreeWalker(bodyNodes[0], NodeFilter.SHOW_ELEMENT, null, false);
var domUtils = Components.classes["@mozilla.org/inspector/dom-utils;1"].getService(Components.interfaces.inIDOMUtils);
var node;
// While the tree walker has more nodes
while ((node = treeWalker.nextNode()) != null)
{
var styleRules = domUtils.getCSSStyleRules(node);
// check if it is inline
if (node.style.backgroundImage != null)
{
node.style.backgroundImage = node.style.backgroundImage;
}
// Loop through the element rules
if (styleRules)
{
for (var i = 0; i < styleRules.Count(); i++)
{
var elementRule = styleRules.GetElementAt(i).QueryInterface(Components.interfaces.nsIDOMCSSStyleRule);
var elementStyles = elementRule.style;
for (var j = 0; j < elementStyles.length; j++)
{
var styleRule = elementStyles[j];
// conDump("bg image url = " + ", " + node.localName + ", " + styleRule);
if (styleRule == "background-image" && elementStyles.getPropertyValue(styleRule) != "none")
{
// // conDump("*********************** = " + ", " + node.localName + ", " +
// styleRule + ", "
// + elementStyles.getPropertyValue(styleRule));
node.style.backgroundImage = elementStyles.getPropertyValue(styleRule);
}
}
}
}
}
}
}, 1);
},
hideImages : function()
{
var frmPreview = cpvw_previewHandler.getPreviewFrame();
var ilist = frmPreview.contentDocument.images;
for (var i = 0; i < ilist.length; i++)
{
// conDump(ilist[i].src);
ilist[i].setAttribute("src", ilist[i].src);
}
}
}
var cpvw_pageHandler = {
arrLinks : [],
hasAcrobat : false,
currentLinkIndex : -1,
handleEvent : function(evt)
{
if (evt.type == "DOMContentLoaded")
{
//cpvw_objOverlay.handleSearchPage();
// cpvw_previewHandler.hidePreview(false);
this.setPreviewsStatus();
var parDoc = cpvw_objOverlay.getContentDocument();
var targetDoc = new XPCNativeWrapper(evt, "originalTarget").originalTarget;
var arrChildDocs = cpvw_getDocuments(cpvw_objOverlay.getContentWindow());
if (parDoc == targetDoc)
{
for (var i = 0; i < arrChildDocs.length; i++)
{
cpvw_objOverlay.changeLinks(arrChildDocs[i]);
}
}
}
},
setPreviewsStatus : function()
{
var parDoc = cpvw_objOverlay.getContentDocument();
var prefEnable = cpvw_prefHandler.getPref(cpvw_Prefs.prefPreviewEnable);
if (prefEnable == "no")
{
cpvw_get("preview-status-image").src = "chrome://cooliris/skin/new/globaloff.png";
cpvw_get("preview-status").setAttribute("status", "globaloff");
parDoc.enablePreview = false;
return;
}
if (parDoc.fromCache)
{
if (parDoc.enablePreview)
{
cpvw_docHandler.parentDoc = parDoc;
document.getElementById("preview-status-image").src = "chrome://cooliris/skin/new/previews-on.png";
cpvw_get("preview-status").setAttribute("status", "previewsOnSite");
return;
}
}
var parDoc = cpvw_objOverlay.getContentDocument();
var result = cpvw_siteManager.isCustomSite(parDoc.location.href);
cpvw_docHandler.parentDoc.enablePreview = false;
// conDump("resulttt " + result[0]);
if (result[0])
{
parDoc.fromCache = true;
document.getElementById("preview-status-image").src = "chrome://cooliris/skin/new/previews-on.png";
cpvw_get("preview-status").setAttribute("status", "previewsOnSite");
if (parDoc.isChanged == null)
{
// frmPreview = cpvw_previewHandler.getPreviewFrame();
var customSite = result[1];
cpvw_previewHandler.customSite = customSite;
if (customSite == "google_images" || customSite == "yahoo_images")
{
parDoc.isChanged = "yes";
delete cpvw_imageDocHandler;
cpvw_imageDocHandler = new cpvw_clsPreviewImages(parDoc, customSite);
cpvw_imageDocHandler.setup();
cpvw_imageDocHandler.parWindow = cpvw_objOverlay.getContentWindow();
cpvw_imageDocHandler.parentDoc.enablePreview = true;
}
else
{
parDoc.isChanged = "yes";
cpvw_docHandler.customSite = customSite;
cpvw_docHandler.parWindow = cpvw_objOverlay.getContentWindow();
// cpvw_docHandler.convertLinks();
cpvw_docHandler.parentDoc.enablePreview = true;
cpvw_docHandler.parentDoc.arrHighlightText = "";
if (customSite == "google_search")
{
var cHref = parDoc.location.href;
var searchWords = null;
var arrTxt = cHref.match(/[&|?]q=(.*?)&/);
if (arrTxt != null && arrTxt.length > 1)
{
searchWords = arrTxt[1].split("+");
}
cpvw_docHandler.parentDoc.arrHighlightText = searchWords;
// conDump("Search words = " + cpvw_docHandler.parentDoc.arrHighlightText);
var isPrefetchSet = cpvw_docHandler.parentDoc.isPrefetchSet;
if (isPrefetchSet == null || isPrefetchSet == false)
{
var prefPrefetch = cpvw_prefHandler.getPref(cpvw_Prefs.prefPreviewPrefetch);
if (prefPrefetch == "yes")
{
cpvw_docHandler.parentDoc.isPrefetchSet = true;
cpvw_docHandler.startPrefetch();
}
}
}
else if (customSite == "yahoo_search")
{
var isPrefetchSet = cpvw_docHandler.parentDoc.isPrefetchSet;
if (isPrefetchSet == null || isPrefetchSet == false)
{
var prefPrefetch = cpvw_prefHandler.getPref(cpvw_Prefs.prefPreviewPrefetch);
if (prefPrefetch == "yes")
{
cpvw_docHandler.parentDoc.isPrefetchSet = true;
cpvw_docHandler.startPrefetch();
}
}
}
if (customSite == "yahoo_search" && cpvw_jsUtils.isFF2())
{
// fix for the FF2 yahoo search problem
setTimeout(function()
{
cpvw_docHandler.convertLinks();
}, 1500);
}
else
cpvw_docHandler.convertLinks();
}
}
else
cpvw_docHandler.parentDoc.enablePreview = true;
}
else
{
cpvw_docHandler.parentDoc.enablePreview = false;
document.getElementById("preview-status-image").src = "chrome://cooliris/skin/new/previews-off.png";
cpvw_get("preview-status").setAttribute("status", "previewsOffSite");
}
},
webPageInit : function(customSite)
{
this.customSite = customSite;
},
convertLinks : function(hostDoc)
{
this.arrLinks = [];
var linkTags = hostDoc.getElementsByTagName("a");
var self = this;
hostDoc.addEventListener("DOMNodeInserted", function(evt)
{
var tNode = evt.target;
var linkTags;
if (tNode instanceof HTMLLinkElement)
{
self.modifyLinks([tNode]);
}
else
{
if (tNode.getElementsByTagName)
{
self.modifyLinks(tNode.getElementsByTagName("a"));
}
}
}, false);
this.modifyLinks(linkTags);
},
filterLinks : function()
{
},
modifyLinks : function(linkTags)
{
var objPreview = this;
var adsArray = [];
var regArray = [];
for (var i = 0; i < linkTags.length; i++)
{
var href = linkTags[i].href.toString();
// filter any unwanted links
if (href.indexOf("http") == -1 || href.indexOf("#") == href.length - 1 || href.toLowerCase().indexOf("logout") != -1
|| href.toLowerCase().indexOf("signin") != -1 || href.toLowerCase().indexOf("login") != -1
|| href.toLowerCase().indexOf("signout") != -1)
{
continue;
}
if (this.customSite == "google_search")
{
if (href.indexOf("/webhp") != -1)
continue;
}
if (this.customSite == "technorati")
{
if (href.indexOf("www.technorati.com/search") != -1 || href.indexOf("www.technorati.com/faves") != -1)
continue;
}
if (this.customSite == "delicious")
{
if (href.indexOf("delete=") != -1)
continue;
}
var strLink = "" + linkTags[i].href;
if (strLink.match(/\.(pdf)$/i))
{
if (!this.hasAcrobat) // do not have acrobat
continue;
}
if (linkTags[i].getAttribute("cpvw_set") == "yes")
continue;
linkTags[i].setAttribute("cpvw_linkIndex", this.arrLinks.length);
linkTags[i].addEventListener("mouseover", function(evt)
{
if (!this.hasAttribute("cpvw_set"))
return;
var linkObj = this;
cpvw_docHandler.curIndex = parseInt(this.getAttribute("linkIndex"));
cpvw_docHandler.evt = evt;
objPreview.previewOpen(evt, this.href, this);
// objPreview.initPreviewShow(evt, this.href, this);
}, false);
linkTags[i].addEventListener("mouseout", function(evt)
{
var linkObj = this;
objPreview.previewClose(evt);
}, false);
linkTags[i].addEventListener("click", function(evt)
{
// alert("A");
var href1 = this.href.toString();
// if (href1.indexOf("#") == -1 && cpvw_docHandler.customSite !=
// "google_video")
// href1 = href1 + "#cooliris";
// conDump(cpvw_docHandler.isShowingPreview + ", " +
// cpvw_docHandler.linkUrl + ", " + href1);
if (cpvw_previewHandler.previewOpenMode == "click" && (!cpvw_docHandler.isShowingPreview || cpvw_docHandler.linkUrl != href1))
{
cpvw_docHandler.openDelayTime = 0;
cpvw_docHandler.dispDelayTime = 500;
cpvw_docHandler.initPreviewShow(evt, this.href, this);
evt.preventDefault();
}
else
{
objPreview.initPreviewHide(evt);
cpvw_previewHandler.hidePreview();
}
}, false);
if (strLink.match(/\.(pdf|doc|xls|ppt)$/i))
continue;
this.arrLinks.push(linkTags[i].getAttribute("href"));
if (linkTags[i].id == "")
regArray.push(linkTags[i]);
else
adsArray.push(linkTags[i]);
}
this.prefetchLinks = this.prefetchLinks.concat(regArray, adsArray);
}
}